package org.lql.chaos.common.response;

import lombok.Builder;
import lombok.Data;
import org.lql.chaos.common.constant.IErrorCode;

import java.time.Instant;

/**
 * @author: liangqinglong
 * @date: 2025-07-02 10:23
 * @description:
 **/
@Data
@Builder
public class ErrorResponse {

	/**
	 * 错误码
	 */
	private int code;

	/**
	 * 错误详情
	 */
	private String message;

	/**
	 * 错误标题（如：系统异常 / 业务异常）
	 */
	private String title;

	/**
	 * 抛出异常的类名（可选）
	 */
	private String exception;

	/**
	 * 请求路径
	 */
	private String path;

	/**
	 * 响应时间戳
	 */
	private long timestamp;

	public static ErrorResponse of(IErrorCode errorCode, String title, String exception, String path) {
		return ErrorResponse.builder()
				.code(errorCode.getCode())
				.message(errorCode.getMessage())
				.title(title)
				.exception(exception)
				.path(path)
				.timestamp(Instant.now().toEpochMilli())
				.build();
	}
}
